package uiLayer;

import java.util.ArrayList;
import java.util.Scanner;

/**
 * Hovedmenuen.
 * 
 * @author (Gruppe 2. Jonas, Danny, Kasper, Bruno & Jesper) 
 * @version (17/12-2012)
 */
public class MainUI
{
    // Attributter
    private PersonUI personUI;
    private VareUI vareUI;
    private AftaleUI aftaleUI;

    /**
     * Constructor for objects of class MainUI
     */
    public MainUI()
    {
        startUI();
    }
    
    /**
     * Startskærm interaktion.
     */
    private void startUI()
    {
        boolean exit = false;
        
        while (!exit)
        {
            int input = getMainMenu();
            
            if (input == 1){ // Personer
                startPersonUI();
            } else if (input == 2){ // Ordrer
                startOrdreUI();
            }else if (input == 3){ // Varer
                startVareUI();
            } else if (input == 4){ // Afslut
                exit = true;
            } else{
                ugyldigtInput();
            }
        }
    }
    
    /**
     * Valgmulighederne i menuen.
     */
    private int getMainMenu()
    {
       System.out.println("Vælg område:");
       System.out.println("1. Personer");
       System.out.println("2. Ordrer");
       System.out.println("3. Varer");
       System.out.println("4. Exit");
        
       int input = getIntInput("");
        
       return input;
    }
    
    /**
     * Standard besked for ugyldigt input i UI'en.
     */
    public static void ugyldigtInput()
    {
        System.out.println("Ugyldigt input, prøv igen.");
    }
    
    /**
     * Starter person UI.
     */
    private void startPersonUI()
    {
        personUI = new PersonUI();
    }
    /**
     * Starter vare UI.
     */
    private void startVareUI()
    {
        vareUI = new VareUI();
    }
    /**
     * Starter ordre UI.
     */
    private void startOrdreUI()
    {
        aftaleUI = new AftaleUI();
    }
    
    /**
     * Standard besked for tryk på en tast inden den skal gå videre.
     */
    public static void waitForInput()
    {
        Scanner keyboard = new Scanner(System.in);  
        System.out.println("Tryk på en knap og enter for at komme videre");
        keyboard.nextLine();
    }
    
    /**
     * Anmoder brugen om input af typen int.
     * 
     * @param   message     Besked som brugeren får inden indtastning af input.
     */
    public static int getIntInput(String message)
    {
        Scanner keyboard = new Scanner(System.in);
        
        if (!message.equals(""))
            System.out.println("- " + message);
        
        int num = -1;
        do
        {
            try
            {
                num = keyboard.nextInt();
            }
            catch (Exception e)
            {
                System.out.println("Der skal indtastes et tal - prøv igen.");
                keyboard.next();
            }
        } while (num == -1);
        
        return num;
    }
    
    /**
     * Anmoder brugen om input af typen int, uden en besked.
     */
    public static int getIntInput()
    {
        return getIntInput("");
    }
    
    /**
     * Anmoder brugen om input af typen String.
     * 
     * @param   message     Beskeden som brugeren får inden input.
     */
    public static String getStringInput(String message)
    {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("- " + message);
        
        String input = keyboard.next();
        
        return input;
    }
    
    /**
     * Anmoder brugen om input af typen double, med en besked.
     * 
     * @param   message     Beskeden som brugeren får inden input.
     */
    public static double getDoubleInput(String message)
    {
        Scanner keyboard = new Scanner(System.in);
        
        if (!message.equals(""))
            System.out.println("- " + message);
        
        double num = -1;
        do
        {
            try
            {
                num = keyboard.nextDouble();
            }
            catch (Exception e)
            {
                System.out.println("Der skal indtastes et tal - prøv igen.");
                keyboard.next();
            }
        } while (num == -1);
        
        return num;
    }
}
